<?php

namespace app\xwam\controller;

/**
 * 控制器基础类
 * 
 * @version 1.0 2015-3-18 SoChishun(14507247@qq.com) Added.
 */
class AppbaseController extends \think\Controller {


    /**
     * 用户登录信息
     * @var array 
     */
    protected $loginData = array();

    /**
     * 控制器空操作方法
     * <br />空操作是指系统在找不到请求的操作方法的时候，会定位到空操作（_empty）方法来执行，利用这个机制，我们可以实现错误页面和一些URL的优化。
     * @version 1.0 2015-3-23 SoChishun Added.
     */
    public function _empty() {
        return $this->fetch('public/404');
    }
    

    protected function initialize() {
        parent::initialize();
        // 2018-4-18 发现注入攻击,直接终止执行,既安全又减少性能损耗
        xsfn_check_sql_injection($this->request->param());
        $siteConf = session('conf'); // 读取动态网站配置 2016-4-21
        $loginUrl = 'login/index';
        if (is_null($siteConf) || !$siteConf) {
            echo '<script>window.parent.location.href="', url($loginUrl), '"</script>';
            //$this->redirect($loginUrl); // redirect会继续执行后面的代码，因此要加exit()退出
            exit();
        }
        // 站点是否关闭检测
        $siteConf['site_status'] || exit($siteConf['site_closed_announcement']);
        // 用户登录检测
        if (false === ($this->loginData = \app\xwam\model\LoginModel::checkLogin(true))) {
            $this->redirect($loginUrl);
        }
        $pagesize =25; // empty($this->loginData['list_row_count']) ? $siteConf['content_list_rows'] : $this->loginData['list_row_count'];
        config('LIST_ROWS', $pagesize ? $pagesize : 25); // 设置全局分页尺寸变量 2016-5-6
        // 更新用户在线统计(影响性能,暂时关闭)
        // $m_login=new \app\xwam\model\LoginModel();
        // $m_login->refresh_login_info($msg);
        //$this->siteId = $this->loginData['site_id']; // site_id赋值
        $this->userName = $this->loginData['user_name']; // 用户名赋值
        $this->assign('meta_title', $siteConf['site_name']); // 站点标题
        $this->assign('site_conf', $siteConf); // 站点配置
        $this->assign('login_data', $this->loginData); // 用户登录资料
    }

    /**
     * 通用框架结果(对话框刷新父页面)
     * @param boolean $status 结果状态
     * @param string|array $error 错误消息
     * @param string $success 成功消息
     * @version 1.0 2015-10-27 SoChishun Added.
     * @version 2018-4-20 sochishun $status支持数组消息格式
     */
    function dialogJump($status, $error = '保存失败!', $success = '保存成功!') {
        if (is_array($status)) {
            if ($status['status']) {
                if (!empty($status['info'])) {
                    $success = $status['info'];
                }
                $status = true;
            } else {
                if (!empty($status['info'])) {
                    $error = $status['info'];
                }
                $status = false;
            }
        }
        if (false === $status) {
            $this->error(is_array($error) ? implode('<br />', $error) : $error);
        } else {
            $this->success($success, '!window.parent.location.reload();', 1);
        }
    }

    /**
     * 通用框架结果(对话框关闭,不刷新父页面)
     * @param boolean $status 结果状态
     * @param array $info array('success'=>'','error'=>'','ajax'=>'');
     * @version 2.0 2016-3-25 SoChishun 重构
     */
    function dialogClose($status, $info = array()) {
        $ainfo = array(
            'success' => '保存成功!',
            'error' => '保存失败!',
            'ajax' => '',
            'success_action' => '!window.parent.close_dialog(window.name);',
        );
        if ($info && is_array($info)) {
            $ainfo = array_merge($ainfo, $info);
        }
        if (false === $status) {
            if (is_array($ainfo['error'])) {
                $ainfo['error'] = implode('<br />', $ainfo['error']);
            }
            $this->error($ainfo['error']);
        } else {
            $this->success($ainfo['success'], $ainfo['success_action'], $ainfo['ajax']);
            // $this->success($success, '!$(\'iframe[name="\' + window.name + \'"]\').attr(\'src\', "about:blank").parent().dialog(\'close\');');
        }
    }

}
